//package com.example.testdemo.rxjava_test;
//
//import android.os.Bundle;
//import android.support.annotation.Nullable;
//import android.support.v7.app.AppCompatActivity;
//import android.util.ArraySet;
//import android.util.Log;
//import android.view.View;
//import android.widget.Button;
//import android.widget.TextView;
//
//import com.example.testdemo.R;
//
//import org.json.JSONException;
//import org.json.JSONObject;
//
//import java.io.BufferedInputStream;
//import java.io.IOException;
//import java.net.HttpURLConnection;
//import java.net.MalformedURLException;
//import java.net.URL;
//
//import rx.Observable;
//import rx.Observer;
//import rx.Scheduler;
//import rx.Subscriber;
//import rx.android.schedulers.AndroidSchedulers;
//import rx.functions.Action0;
//import rx.functions.Action1;
//import rx.functions.Func1;
//import rx.schedulers.Schedulers;
//
//public class RxJavaAtestActivity extends AppCompatActivity {
//
//    public static final String TAG = "RxJavaAtextActivity";
//    private Button btnSend;
//    private TextView textView;
//
//
//    private Observable<String> observable;
//    private Observer<String> observer;
//    @Override
//    protected void onCreate(@Nullable Bundle savedInstanceState) {
//        super.onCreate(savedInstanceState);
//        setContentView(R.layout.activity_rxjava_test_a_view);
//        initView();
//    }
//
//    private void initView(){
//        btnSend = findViewById(R.id.button);
//        textView = findViewById(R.id.textView2);
//
//        btnSend.setOnClickListener(new View.OnClickListener() {
//            @Override
//            public void onClick(View v) {
////                testObservable();
////                testObservable2();
////                testObservable3();
////                testObservable4();
//                testHttpRequest();
//            }
//        });
//    }
//
//
//
//    private void testObservable(){
//        Observable.create(new Observable.OnSubscribe<String>() {
//            @Override
//            public void call(Subscriber<? super String> subscriber) {
//                subscriber.onNext("第一次哦，第一次，好紧张！");
//                subscriber.onNext("第二次哦，第二次，好紧张！");
//                subscriber.onCompleted();
//            }
//        }).subscribe(new Observer<String>() {
//            @Override
//            public void onCompleted() {
//
//            }
//
//            @Override
//            public void onError(Throwable e) {
//
//            }
//
//            @Override
//            public void onNext(String s) {
//                try {
//                    Thread.sleep(5000);
//                } catch (InterruptedException e) {
//                    e.printStackTrace();
//                }
//                textView.setText(s);
//            }
//        });
//    }
//
//    /**
//     * observable.just
//     */
//    private void testObservable2(){
//        Observable.just("hello", "hahahah", "yaoyaoyao").subscribe(
//                new Action1<String>() {
//                    @Override
//                    public void call(String s) {
//                        // onNext()中执行的代码
//                        textView.setText(s);
//                    }
//                }, new Action1<Throwable>() {
//                    @Override
//                    public void call(Throwable throwable) {
//                        // onError()中执行的代码
//                    }
//                }, new Action0() {
//                    @Override
//                    public void call() {
//                        // onCompleted()中执行的代码
//                    }
//                }
//        );
//    }
//
//
//    /**
//     * observable.from
//     */
//    private void testObservable3(){
//        String [] array = new String[]{"hello", "hahahah", "yaoyaoyao"};
//        Observable.from(array).subscribe(new Action1<String>() {
//                    @Override
//                    public void call(String s) {
//                        // onNext()中执行的代码
//                        textView.setText(s);
//                    }
//                }, new Action1<Throwable>() {
//                    @Override
//                    public void call(Throwable throwable) {
//                        // onError()中执行的代码
//                    }
//                }, new Action0() {
//                    @Override
//                    public void call() {
//                        // onCompleted()中执行的代码
//                    }
//                }
//        );
//    }
//
//    /**
//     * observable.just map过滤
//     */
//    private void testObservable4(){
//        Observable.just("test","过滤消息").map(new Func1<String, String>() {
//            @Override
//            public String call(String s) {
//                // TODO: 2018/11/27 在这里可以过滤消息 但是只能return 怎么过滤
//                if("test".equals(s)){
//                    return "";
//                }
//                return s;
//            }
//        }).subscribe(new Action1<String>() {
//            @Override
//            public void call(String s) {
//                // onNext()中执行的代码
//                textView.setText(s);
//            }
//        }, new Action1<Throwable>() {
//            @Override
//            public void call(Throwable throwable) {
//                // onError()中执行的代码
//            }
//        }, new Action0() {
//            @Override
//            public void call() {
//                // onCompleted()中执行的代码
//            }
//        });
//    }
//
//
//    /**
//     * Rxjava网络请求模拟
//     */
//    private void testHttpRequest(){
//        Observable.just("https://api.github.com/users/basil2style")
//                .map(new Func1<String, String>() {
//                    @Override
//                    public String call(String s) {
//                        textView.setText("请求中...");
//                        //网络请求
//                        String data = startHttpRequest(s);
//                        return data;
//                    }
//                })
//                .map(new Func1<String, InitData>() {
//                    @Override
//                    public InitData call(String s) {
//                        textView.setText("解析中...");
//                        //解析
//                        return paraseJson(s);
//                    }
//                })
//                .subscribeOn(Schedulers.io())
//                .observeOn(AndroidSchedulers.mainThread())
//                .subscribe(new Observer<InitData>() {
//                    @Override
//                    public void onCompleted() {
//
//                    }
//
//                    @Override
//                    public void onError(Throwable e) {
//                        textView.setText("请求失败");
//
//                    }
//
//                    @Override
//                    public void onNext(InitData initData) {
//                        //接收
//                        textView.setText("id="+initData.id +" name="+initData.name +" type="+initData.type +"url="+initData.url);
//                    }
//                });
//    }
//
//
//
//    private String startHttpRequest(String strurl){
//        StringBuffer result = null;
//        try {
//            URL url = new URL(strurl);
//            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
//            connection.setRequestMethod("GET");
//            connection.setDoInput(true);
//            connection.connect();
//            int responseCode = connection.getResponseCode();
//            if (responseCode == 200) {
//                result = new StringBuffer();
//                BufferedInputStream bis = new BufferedInputStream(connection.getInputStream());
//                byte[] b = new byte[1024];
//                int len = -1;
//                while ((len = bis.read(b)) != -1) {
//                    result.append(new String(b, 0, len));
//                }
//                bis.close();
//            }
//        } catch (MalformedURLException e) {
//            e.printStackTrace();
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//        return result.toString();
//    }
//
//
//    private InitData paraseJson(String data){
//        //解析
//        InitData infoData = new InitData();
//        try {
//            JSONObject object = new JSONObject(data);
//            infoData.id = object.getInt("id");
//            infoData.url = object.getString("url");
//            infoData.name = object.getString("name");
//            infoData.type = object.getString("type");
//        } catch (JSONException e) {
//            e.printStackTrace();
//        }
//        return infoData;
//    }
//    public class InitData{
//        public int id;
//        public String name;
//        public String type;
//        public String url;
//    }
//}
